# # ====================================
# # Company: Zonge International, INC.
# # Developer: Wanjie Feng
# # Date: 10/18/2023
# # Time: 9:54 AM
# # Filename: ERT_Process.py
# # IDE: PyCharm
# # =====================================
# import numpy as np
# '''
#     本程序模拟了手部UI读取数据、显示数据的过程。这里假设主机传到手部的文件格式为*.cvs格式，
#     如后期数据格式有变，数据读取部分也要做相应改变。
#     1. 获取硬件信息
#     2. 项目参数
#     3. 读取 *.csv 数据及部分系统状态信息
#     4. 形成头文件
#     5. 处理数据
#     6. 显示数据
#     7. 保存数据
#     8. 重复3-7
#     9. 采集结束
# '''
#
# from Read_System import ReadSys
# from Read_Survey import ReadSurvey
# from Data_collection import ReadData
# from Compute_RhoIP import ComputeRhoIP
# from ERT_Plot import ERTPlot
#
# # 排列图示
# def ERTuiArrayShow(IPValues, ABMN, Aspacing):
#
#     '''
#     本程序画出高密度电阻率法的等值线图和排列图
#     :param IPValues:
#     :return: NONE
# '''
#     ####这里画出两个图，一个是排列图，利用红色圆圈表示发射，用黑色圆表示接收
#     #最后一个IP的值
#     #获取相应的画图参数
#     #Aspacing 点距
#     NIP = len(IPValues)
#     lastIP = IPValues[NIP-1]
#     #print("------------- IPValues ------------"+str(IPValues))
#
#     #print("------------- ABMN ------------"+str(ABMN))
#
#     #print("------------- Aspacing ------------"+str(Aspacing))
#
#     #print("------------- NIP ------------"+str(NIP))
#
#     #print("------------- lastIP ------------"+str(lastIP))
#     TXA = lastIP['TXA']
#     TXB = lastIP['TXB']
#     RXM = lastIP['RXM']
#     RXN = lastIP['RXN']
#     X = lastIP['X']
#     Z = lastIP['Z']
#     #rho = lastIP['Rho']
#     # #####计算图的尺寸
#     Min_X = np.min(ABMN[:,0]-1) * Aspacing
#     Max_X = np.max(ABMN[:,3]-1) * Aspacing
#     Min_Z = np.min(ABMN[:,2]-ABMN[:,1])*Aspacing/2 + Aspacing/2
#     Max_Z = np.max(ABMN[:,2]-ABMN[:,1])*Aspacing/2 + Aspacing/2
#
#     fig1 = plt.figure(num=1)
#     manager = plt.get_current_fig_manager()
#     #manager.window.showMaximized()                  #图像最大化
#     manager.resize(*manager.window.maxsize())
#     ax1 = fig1.add_subplot(211)
#     ax1.clear()                                     #Python清除上次画图的内容
#     plt.xlim([Min_X,Max_X])                         #设置横向尺度
#     plt.ylim([0,Max_Z])                             #设置纵向尺度
#     Radius = Aspacing/10                            #圆表示画图点，圆的半径
#     #画出所有排列的地下记录点
#     NS = np.size(ABMN,0)
#     for CI in range(NS):
#         BE = (ABMN[CI, 1]-1) * Aspacing
#         ME = (ABMN[CI, 2]-1) * Aspacing
#         XE = (ME-BE)/2 + BE
#         ZE = (ME-BE)/2 + Aspacing/2
#         E_C = plt.Circle((XE, ZE), radius=Radius, fill=False, color='black', linewidth=1.0, \
#                          clip_on=False)  # 画图点位置
#         plt.gca().add_artist(E_C)
#     #画出本次测量的地下记录的及发射接收位置
#     TXA_C = plt.Circle((TXA, 0), radius=Radius, fill=False, color='red', linewidth=2.0, \
#                        clip_on=False)               #发射A位置
#     plt.gca().add_artist(TXA_C)
#     TXB_C = plt.Circle((TXB, 0), radius=Radius, fill=False, color='red', linewidth=2.0, \
#                        clip_on=False)               #发射B位置
#     plt.gca().add_artist(TXB_C)
#     RXM_C = plt.Circle((RXM, 0), radius=Radius, fill=False, color='black', linewidth=2.0, \
#                        clip_on=False)               #接收M位置
#     plt.gca().add_artist(RXM_C)
#     RXN_C = plt.Circle((RXN, 0), radius=Radius, fill=False, color='black', linewidth=2.0, \
#                        clip_on=False)               #接收N位置
#     plt.gca().add_artist(RXN_C)
#     #电阻率画图点用实心圆表示
#     Rho_C = plt.Circle((X, Z), radius=Radius, fill=True, color='blue', linewidth=2.0, \
#                        clip_on=False)               #拟断面图画图点
#     plt.gca().add_artist(Rho_C)
#     plt.gca().invert_yaxis()
#     plt.gca().set_xlabel('Array Location(m)', size=14)
#     plt.gca().set_ylabel('n-spacing', size=14)
#     plt.gca().xaxis.set_label_position('top')
#     plt.gca().xaxis.tick_top()
#     plt.gca().set_aspect('equal')
#     plt.yticks(np.insert(np.arange(Min_Z, Max_Z + Aspacing/2, Aspacing/2),0,0))
#     plt.xticks(np.arange(Min_X, Max_X, Aspacing ))
#     #用隔离系数代替纵向坐标的标签
#     labels = [item.get_text() for item in ax1.get_yticklabels()]
#     NLAB = len(labels)
#     labs = np.insert(np.arange(int(np.min(ABMN[:, 2] - ABMN[:, 1])), \
#                                int(np.max(ABMN[:, 2] - ABMN[:, 1]) + 1), 1),0,0)
#     if NLAB == len(labs):
#         ax1.set_yticklabels(labs)
#     #隐藏图像的底部边界
#     ax1.spines['bottom'].set_visible(False)
#     #plt.title('高密度排列图示')
#     ###这个部分本身是不需要的，但是在视电阻率图加了colorbar之后，两个图大小一样了，因此这个排列图也加了一个colorbar
#     divider = make_axes_locatable(ax1)
#     cax = divider.append_axes('right', size="2%", pad=0.1)
#     colormap = cm.get_cmap('jet')
#     sm = plt.cm.ScalarMappable(cmap=colormap)
#     cbar = plt.colorbar(sm, cax=cax)
#     cbar.remove()           #不显示colorbar
#     #####
#     plt.draw()
#     plt.pause(0.01)
#     #plt.close()
#     ##最终画出等值线图
#     # plt.show()
#
#     f = io.BytesIO()
#     plt.savefig(f, format="png")
#     print("___________________ERTPlot__________________22222")
#
#     return f.getvalue()